package com.chia.multienty.core.dubbo.service;

import com.chia.multienty.core.domain.bo.workflow.ProcessDeployResult;
import com.chia.multienty.core.domain.bo.workflow.ProcessStartResult;
import com.chia.multienty.core.parameter.workflow.*;
import com.chia.multienty.core.pojo.ProcessArg;
import com.chia.multienty.core.pojo.WorkflowProcess;
import org.flowable.idm.api.Group;
import org.flowable.idm.api.User;

import java.util.List;
import java.util.Map;

public interface DubboWorkflowService {
    List<ProcessArg> getProcessArgs(Long processId, List<Long> argIds);

    void addUser(FlowableUserAddParameter parameter);

    void deleteUser(String userId);

    List<User> getUserList(FlowableUserSearchParameter parameter);

    void addGroup(FlowableGroupAddParameter parameter);

    void deleteGroup(FlowableGroupDeleteParameter parameter);

    List<Group> getGroupList(FlowableGroupListGetParameter parameter);

    void addMembership(String userId, String groupId);

    void deleteMembership(String userId, String groupId);

    ProcessDeployResult deploy(FlowableDeployParameter parameter);

    ProcessDeployResult redeploy(FlowableRedeployParameter parameter);

    void deleteDeploy(FlowableDeployDeleteParameter parameter);

    ProcessStartResult start(FlowableProcessStartParameter parameter);

    WorkflowProcess getWorkflowProcess(WorkflowProcessDetailGetParameter parameter);

    List<Map<String, Object>> getTaskList(FlowableTaskListGetParameter parameter);

    void examine(FlowableExamineParameter parameter);

    void revoke(FlowableProcessRevokeParameter parameter);
}
